package cn.getech.data.development.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 任务信息表
 * </p>
 *
 * @author zenith
 * @since 2018-08-23
 */
@Data
@TableName("bdp_job_info")
public class JobInfo implements Serializable  {

    private static final long serialVersionUID = 1L;

    /**
     * 任务编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 任务名称
     */
    private String name;

    /**
     * 任务描述
     */
    @TableField("`desc`")
    private String desc;
    /**
     * 任务状态
     */
    private Boolean enable;
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
    /**
     * 创建用户
     */
    @TableField("create_per")
    private Integer createPer;
    /**
     * 修改时间
     */
    @TableField("mod_time")
    private Date modTime;
    /**
     * 修改用户
     */
    @TableField("mod_per")
    private Integer modPer;
    /**
     * 上次运行状态 0 失败 1 成功 2 运行中 3未启动
     */
    @TableField("last_run_state")
    private Integer lastRunState;
    /**
     * 上次运行时间
     */
    @TableField("last_run_time")
    private Date lastRunTime;
    /**
     * 上次运行耗时 单位ms
     */
    @TableField("last_run_cost")
    private Long lastRunCost;

    @TableField("last_run_num")
    private Integer lastRunNum;


    @TableField("success_count")
    private Long successCount;

    @TableField("fail_count")
    private Long failCount;

    @TableField("fail_mail_address")
    private String failMailAddress;

    /**
     * 所属项目
     */
    @TableField("proc_id")
    private Integer procId;

    @TableField("param")
    private String param;

    @TableField("last_oozie_job_id")
    private String lastOozieJobId;

    @TableField("last_cor_oozie_job_id")
    private String lastCorOozieJobId;

    //最近一次运行的类型 -1：定时调度、-2：循环调度、id：手动操作的人id
    @TableField("last_run_type")
    private Integer lastRunType;

    @TableField("last_run_operter_name")
    private String lastRunOperterName;

    /**
     * 上次调度运行时间
     */
    @TableField("cron_last_run_time")
    private Date cronLastRunTime;

    /**
     * 创建用户
     */
    @TableField(exist=false)
    private String createPerName;

    @TableField(exist=false)
    private String queueName;

    @TableField(exist=false)
    private String cronName;


    @TableField(exist=false)
    private Integer isOpenTime;
    @TableField(exist=false)
    private String sysStartTime;
    @TableField(exist=false)
    private String sysEndTime;
    @TableField(exist=false)
    private Double sysDurTime;


    /**
     * 修改用户
     */
    @TableField(exist=false)
    private String modPerName;

    /**
     * 所属人id
     */
    @TableField(exist=false)
    private String userInfoName;
    /**
     * 所属项目
     */
    @TableField(exist=false)
    private String procName;

    @TableField(exist=false)
    private String enableName;

    /**
     * 最后运行状态
     */
    @TableField(exist=false)
    private String lastRunStateName;


    @TableField(exist=false)
    private List<JobNodeInfo> jobNodeInfos;

    /**
     * 记录每个job的成功个数
     */
    @TableField(exist = false)
    private Integer successNum;


    /**
     * 记录每个job的失败个数
     */
    @TableField(exist = false)
    private Integer failedNum;

    /**
     * 记录开始节点的配置
     */
    @TableField(exist = false)
    private String startNodeInfo;

    /**
     * x的位置
     */
    @TableField("pos_x")
    private Double posX;

    /**
     * y的位置
     */
    @TableField("pos_y")
    private Double posY;

}
